{"version":3,"file":"static/chunks/pages/team/[slug]-de1261696a471942.js","mappings":"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","sources":["webpack://_N_E/?f9d0","webpack://_N_E/./src/components/CollapsableSection/styles.ts","webpack://_N_E/./src/components/CollapsableSection/index.tsx","webpack://_N_E/./src/components/EditableUrlForm/index.tsx","webpack://_N_E/./src/components/ProgressList/styles.ts","webpack://_N_E/./src/components/ProgressList/index.tsx","webpack://_N_E/./src/components/TeamMembersOverviewPodium/styles.ts","webpack://_N_E/./src/components/TeamMembersOverviewPodium/index.tsx","webpack://_N_E/./src/components/TeamMembersOverview/styles.ts","webpack://_N_E/./src/components/TeamMembersOverview/index.tsx","webpack://_N_E/./src/components/TeamPageProgress/index.tsx","webpack://_N_E/./src/components/TeamPageSettings/styles.ts","webpack://_N_E/./src/components/TeamPageSettings/index.tsx","webpack://_N_E/./src/components/TeamPage/styles.ts","webpack://_N_E/./src/components/TeamPage/index.tsx","webpack://_N_E/./src/pages/team/[slug]/index.tsx","webpack://_N_E/../../node_modules/date-fns/parseISO.mjs"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/team/[slug]\",\n function () {\n return require(\"private-next-pages/team/[slug]/index.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/team/[slug]\"])\n });\n }\n ","import styled from \"styled-components\";\nimport { type ThemeType } from \"@cruk/cruk-react-components\";\n\nexport const FlippingIcon = styled.span<{\n $open: boolean;\n theme: ThemeType;\n}>`\n display: inline-block;\n transform: ${({ $open }) =>\n $open ? \"translateY(0.1em) scaleY(-1)\" : \"initial\"};\n transition: transform linear 0.5s;\n color: ${({ theme }) => theme.colors.primary};\n margin-left: ${({ theme }) => theme.spacing.xxs};\n`;\n\nexport const HeaderText = styled.span<{ theme: ThemeType }>`\n font-family: ${({ theme }) => theme.typography.fontFamilyHeadings};\n font-size: ${({ theme }) => theme.fontSizes.l};\n color: ${({ theme }) => theme.colors.primary};\n text-transform: ${({ theme }) =>\n theme.name === \"su2c\" ? \"uppercase\" : \"none\"};\n`;\n","import { type ReactNode, useState } from \"react\";\nimport { useTheme } from \"styled-components\";\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons\";\nimport {\n Box,\n Collapse,\n IconFa,\n type ThemeType,\n} from \"@cruk/cruk-react-components\";\n\nimport {\n FlippingIcon,\n HeaderText,\n} from \"@fwa/src/components/CollapsableSection/styles\";\n\ntype Props = {\n id: string;\n headerTitleText: string;\n headerBody?: ReactNode;\n headerIcon?: ReactNode;\n startOpen?: boolean;\n handleOpenChanged?: (isOpen: boolean) => void;\n children: ReactNode;\n};\n\nexport const CollapsableSection = ({\n id,\n headerTitleText,\n headerBody,\n headerIcon,\n startOpen = false,\n children,\n handleOpenChanged,\n}: Props) => {\n const [settingsOpen, setSettingsOpen] = useState(startOpen);\n const handleSettingsOpen = (value: boolean) => {\n if (handleOpenChanged) {\n handleOpenChanged(value);\n }\n setSettingsOpen(value);\n };\n\n const theme = useTheme();\n const typedTheme = theme as ThemeType;\n return (\n \n
\n {headerIcon ? (\n \n {headerIcon}\n \n ) : null}\n {headerTitleText}\n \n \n \n
\n {headerBody}\n \n ) : null\n }\n headerTitleText={headerTitleText}\n startOpen={startOpen}\n headerTitleTextColor=\"primary\"\n headerTitleTextSize=\"l\"\n headerTitleTextFontFamily={typedTheme.typography.fontFamilyHeadings}\n onOpenChange={handleSettingsOpen}\n >\n {children}\n \n );\n};\n\nexport default CollapsableSection;\n","import { type ChangeEvent, useState } from \"react\";\nimport {\n Text,\n Heading,\n Button,\n TextField,\n Link,\n Box,\n IconFa,\n} from \"@cruk/cruk-react-components\";\nimport { faArrowRight, faLink } from \"@fortawesome/free-solid-svg-icons\";\n\nimport { calcLength } from \"@fwa/src/utils/formUtils\";\nimport { isBrowser } from \"@fwa/src/utils/browserUtils\";\nimport { fwsUrlCheckUrl } from \"@fwa/src/services/fundraisingPageService\";\nimport { fetcher, FWA_BASE_URL } from \"@fwa/src/services/apiClient\";\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\nimport { PAGE_URL_MAX_LENGTH, validatePageUrl } from \"@fwa/src/validation/page\";\n\nimport { Editable } from \"@fwa/src/components/Editable\";\n\nimport { Border, ArrowWrapper } from \"@fwa/src/components/styles\";\n\nimport { type CheckUrlType, type PageType } from \"@fwa/src/types\";\n\n// from FWS page.url is actually a `path` like `team/1111`\n// in the form, the user can see an edit the `slug` for example `1111`, we only validate against the slug\n// when submitting the data to FWS we just send sumbit the `urlPath` with the new path `/team/2222`\nexport const EditableUrlForm = ({\n page,\n handleEditData,\n route,\n}: {\n page: PageType;\n handleEditData: (\n data: Partial,\n ) => Promise;\n route: \"page\" | \"team\";\n}) => {\n const { trackError } = useTracking();\n const currentSlug = page.url.slice(page.url.lastIndexOf(\"/\") + 1);\n const [slugState, setSlugState] = useState(currentSlug);\n const [validationMessage, setValidationMessage] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n const [urlSuggestion, setUrlSuggestion] = useState(\"\");\n\n const handleSubmit = async (): Promise => {\n // validate slug\n const validationResultString = validatePageUrl(slugState);\n setValidationMessage(validationResultString || \"\");\n // if invalid, stop\n if (validationResultString) return Promise.resolve();\n // check if url is unique\n // when checking if the url is unique we need send the full `url` to fwsUrlCheckUrl()\n // this will fail if you are looking at a local or PR deploy\n // as the data it checks agains will be the full url on the production or integration database\n setIsLoading(true);\n const newUrl = `${FWA_BASE_URL}/${route}/${slugState}`;\n const isUrlUnique = await fetcher(fwsUrlCheckUrl({ url: newUrl }))\n .then((res) => res as CheckUrlType)\n .then((data: CheckUrlType) => {\n if (data.isUnique) {\n setUrlSuggestion(\"\");\n return true;\n } else {\n setUrlSuggestion(data.url);\n setValidationMessage(\n \"That link is already in use, please try another.\",\n );\n setIsLoading(false);\n return false;\n }\n })\n .catch((error) => {\n setValidationMessage(\"Unable to check link\");\n setIsLoading(false);\n trackError(error as Error, {\n component: \"EditableDisplayNameForm\",\n function: \"isUrlUnique\",\n });\n });\n\n // if url is not unique, stop\n if (!isUrlUnique) return Promise.resolve();\n\n // sumbit data\n return handleEditData({\n urlPath: `/${route}/${slugState}`,\n })\n .then(() => {\n setIsLoading(false);\n return;\n })\n .catch((error) => {\n setValidationMessage(\"Unable to submit\");\n setIsLoading(false);\n trackError(error as Error, {\n component: \"EditableDisplayNameForm\",\n function: \"handleSubmit\",\n });\n return;\n });\n };\n\n const handleBlur = () => {\n const validationResultString = validatePageUrl(slugState);\n setValidationMessage(validationResultString || \"\");\n };\n\n const handleChange = (e: ChangeEvent) => {\n setSlugState(e.target.value);\n };\n\n const handleSuggestionClick = () => {\n const suggestedSlug = urlSuggestion.split(`/${route}/`)[1];\n setSlugState(suggestedSlug);\n setValidationMessage(\"\");\n setUrlSuggestion(\"\");\n };\n\n if (!page) return null;\n\n return (\n // FWS can't handle setting a custom URL more than once\n // so we need to check if the URL has already been set with previous url\n <>\n {page.previousUrl ? (\n \n \n \n \n \n Link\n \n \n \n {page.url}\n \n \n \n Spread the word - share this page with your friends, family and\n supporters.\n \n \n ) : (\n \n \n \n \n \n Link\n \n \n You may edit the link only once. Once your Link has been\n changed, it can not be changed again.\n \n Can only contain letters, numbers and hyphens.\n <>\n \n {`${isBrowser ? window.location.origin : \"\"}/page/`}\n \n }\n />\n {`${\n PAGE_URL_MAX_LENGTH - calcLength(slugState)\n } characters remaining`}\n \n {urlSuggestion.length ? (\n \n {`Available: `}\n \n {urlSuggestion}\n \n \n ) : null}\n \n }\n viewNode={\n \n \n \n \n \n \n \n \n Link\n \n {`Customise the link for your ${\n route === \"team\" ? \"Team\" : \"Giving\"\n } Page`}\n \n }\n handleSubmit={handleSubmit}\n tooltip=\"Edit link\"\n />\n )}\n \n );\n};\n\nexport default EditableUrlForm;\n","import styled from \"styled-components\";\nimport { type ThemeType } from \"@cruk/cruk-react-components\";\n\nexport const ProgressButton = styled.button<{ theme: ThemeType }>`\n font-size: ${({ theme }) => theme.fontSizes.m};\n background-color: rgba(255, 255, 255, 0);\n border: none;\n cursor: pointer;\n text-align: left;\n`;\n\nexport const RowStretchCentered = styled.span`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const ProgressRow = styled.div<{ theme: ThemeType }>`\n display: flex;\n align-items: center;\n padding-bottom: ${({ theme }) => theme.spacing.xxs};\n`;\n\nexport const BlockCentreMobile = styled.div<{ theme: ThemeType }>`\n width: 100%;\n > * {\n margin-left: auto;\n margin-right: auto;\n }\n\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n width: auto;\n > * {\n margin-left: ${({ theme }) => theme.spacing.s};\n margin-right: 0;\n }\n }\n`;\n","import { type MouseEvent, useEffect } from \"react\";\nimport { IconFa, Link, ProgressBar, Text } from \"@cruk/cruk-react-components\";\nimport { faCircleCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport { faCircle } from \"@fortawesome/free-regular-svg-icons\";\n\nimport { useOptimizelyContext } from \"@fwa/src/contexts/OptimizelyContext\";\nimport { useActiveSectionContext } from \"@fwa/src/contexts/ActiveSectionContext\";\n\nimport { List, ScreenReaderOnly } from \"@fwa/src/components/styles\";\nimport {\n ProgressRow,\n RowStretchCentered,\n ProgressButton,\n BlockCentreMobile,\n} from \"@fwa/src/components/ProgressList/styles\";\n\nimport {\n type ProgressItemType,\n type PageActiveSectionType,\n} from \"@fwa/src/types\";\n\nexport const completionStats = (progressItems: ProgressItemType[]) => {\n const doneCount: number =\n progressItems.reduce(\n (accumulator, progressItem): number =>\n progressItem.isDone ? accumulator + 1 : accumulator,\n 0,\n ) || 0;\n const percentageComplete = Math.floor(\n (doneCount / progressItems.length) * 100,\n ); // floor or round here? difference is basically 66% vs 67% for 2/3\n const complete = percentageComplete === 100;\n\n return { doneCount, percentageComplete, complete };\n};\n\ntype ProgressListProps = {\n progressItems: ProgressItemType[];\n};\n\nlet percentageCompleteOnFirstLoad = 0;\n\nexport const ProgressList = ({ progressItems }: ProgressListProps) => {\n const { trackEventOptimizely } = useOptimizelyContext();\n const [, setActiveSectionContext] = useActiveSectionContext();\n const handleLinkClick = (fieldName?: PageActiveSectionType) => {\n if (!fieldName) return;\n const element = document.getElementById(fieldName);\n element?.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n\n setTimeout(() => {\n setActiveSectionContext({\n activeSection: fieldName,\n });\n }, 1000);\n };\n\n const { percentageComplete } = completionStats(progressItems);\n\n useEffect(() => {\n percentageCompleteOnFirstLoad = percentageComplete;\n // we only want this to happen on first load so empty deps array\n }, []);\n\n useEffect(() => {\n if (!trackEventOptimizely) return;\n if (percentageComplete !== percentageCompleteOnFirstLoad) {\n trackEventOptimizely({\n eventKey: \"of_progress_bar_completion\",\n eventTags: { percentageComplete },\n });\n }\n }, [percentageComplete, trackEventOptimizely]);\n\n return (\n <>\n \n {progressItems.map((progressItem: ProgressItemType) => (\n
  • \n \n ) => {\n e.preventDefault();\n handleLinkClick(progressItem.fieldName);\n }}\n data-cta-type={progressItem.dataCtaType}\n >\n \n \n \n {progressItem.isDone ? \"completed\" : \"to do\"}\n \n {progressItem.isDone ? (\n \n ) : (\n \n )}\n \n {progressItem.label}\n \n \n \n
  • \n ))}\n
    \n \n \n \n \n );\n};\n\nexport default ProgressList;\n","import { Avatar, Box, type ThemeType } from \"@cruk/cruk-react-components\";\nimport { type MedalType } from \"@fwa/src/types\";\nimport styled from \"styled-components\";\n\nconst PODIUM_WIDTH = \"14rem\";\nconst LARGE_ICON = \"4.75rem\";\nconst MEDIUM_ICON = \"4.5rem\";\nconst SMALL_ICON = \"4rem\";\n\nexport const PodiumWrapper = styled(Box)`\n max-width: ${PODIUM_WIDTH};\n position: relative;\n margin: auto;\n`;\n\nexport const PositionWrapper = styled.div<{\n $medal: MedalType | null;\n}>`\n width: ${({ $medal }) => ($medal === \"gold\" ? \"100%\" : \"50%\")};\n display: inline-block;\n`;\n\nexport const UserIconWrapper = styled.div<{\n theme: ThemeType;\n $medal: MedalType | null;\n}>`\n width: ${({ $medal }) =>\n $medal === \"gold\"\n ? LARGE_ICON\n : $medal === \"silver\"\n ? MEDIUM_ICON\n : SMALL_ICON};\n height: ${({ $medal }) =>\n $medal === \"gold\"\n ? LARGE_ICON\n : $medal === \"silver\"\n ? MEDIUM_ICON\n : SMALL_ICON};\n min-width: ${({ $medal }) =>\n $medal === \"gold\"\n ? LARGE_ICON\n : $medal === \"silver\"\n ? MEDIUM_ICON\n : SMALL_ICON};\n overflow: hidden;\n margin: auto;\n background-color: ${({ theme }) => theme.tokenColors.gold};\n outline: 8px solid\n ${({ $medal }) =>\n $medal === \"gold\"\n ? \"#FFCA00\"\n : $medal === \"silver\"\n ? \"#B4B4B4\"\n : \"#CC8B38\"};\n border-radius: 50%;\n border-style: solid;\n border-color: ${({ theme }) => theme.colors.avatarBorder};\n border-width: 8px;\n`;\n\nexport const AvatarFull = styled(Avatar)`\n width: 100%;\n height: 100%;\n`;\n\nexport const FirstPlace = styled.div<{ theme: ThemeType }>`\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: #ffca00;\n border-radius: 50%;\n width: ${({ theme }) => theme.spacing.m};\n height: ${({ theme }) => theme.spacing.m};\n position: absolute;\n top: -1.5rem;\n right: 4rem;\n`;\n","import { type TeamMemberType } from \"@fwa/src/types\";\nimport {\n AvatarFull,\n FirstPlace,\n PodiumWrapper,\n PositionWrapper,\n UserIconWrapper,\n} from \"@fwa/src/components/TeamMembersOverviewPodium/styles\";\nimport { Text } from \"@cruk/cruk-react-components\";\nimport { imagePathFromImageType } from \"@fwa/src/services/imageService\";\n\ntype MedalArrayType = \"gold\" | \"silver\" | \"bronze\";\n\nconst PodiumMember = ({\n member,\n medalColor,\n}: {\n member: TeamMemberType;\n medalColor: MedalArrayType;\n}) => {\n if (!member) return null;\n\n const name = member.childPage.owner?.displayName\n ? member.childPage.owner?.displayName\n : member.childPage.fundraiser.forename;\n // if image avatar image url is undefined use a default letter.\n const fundraiserProfileImageUrl = member.childPage.fundraiser.profileImage\n ? imagePathFromImageType(member.childPage.fundraiser.profileImage)\n : undefined;\n // user with a displayname should not use profile image here.\n const imageUrl = member.childPage.owner?.displayName\n ? undefined\n : fundraiserProfileImageUrl;\n\n return (\n \n \n \n \n \n {medalColor === \"gold\" && (\n \n 1st\n \n )}\n \n );\n};\n\nexport const TeammMembersOverviewPodium = ({\n members,\n}: {\n members: TeamMemberType[];\n}) => (\n \n \n \n \n \n);\n\nexport default TeammMembersOverviewPodium;\n","import styled from \"styled-components\";\nimport { Box, type ThemeType } from \"@cruk/cruk-react-components\";\n\nconst PODIUM_WIDTH = \"14rem\";\n\nexport const ShadowWrapper = styled.li<{ theme: ThemeType }>`\n width: 100%;\n border: ${({ theme }) => `dashed 2px ${theme.tokenColors.grey_300}`};\n border-radius: ${({ theme }) => theme.button.borderRadius};\n padding: ${({ theme }) => theme.spacing.xs};\n`;\n\nexport const FullWidthChild = styled.div`\n display: flex;\n * {\n flex: 1 1;\n }\n`;\n\nexport const AvatarWrapper = styled(Box)`\n height: 5em;\n width: 5em;\n min-width: 5em;\n object-fit: fill;\n`;\n\nexport const ButtonWrapper = styled(Box)`\n width: 100%;\n`;\n\nexport const PodiumLinkWrapper = styled.div`\n max-width: ${PODIUM_WIDTH};\n margin: auto;\n`;\n","import { type ChangeEvent } from \"react\";\nimport NextLink from \"next/link\";\nimport {\n Text,\n Loader,\n Box,\n Select,\n Button,\n Heading,\n PopOver,\n IconFa,\n Link as A,\n} from \"@cruk/cruk-react-components\";\nimport { useRouter } from \"next/compat/router\";\nimport { faTrophy } from \"@fortawesome/free-solid-svg-icons\";\n\nimport { useSwrGet } from \"@fwa/src/hooks/useSwrGet\";\nimport { fwsUrlTeamMembers } from \"@fwa/src/services/teamService\";\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\nimport { isBrowser } from \"@fwa/src/utils/browserUtils\";\nimport { queryAsString } from \"@fwa/src/utils/urlUtils\";\n\nimport { TeammMembersOverviewPodium } from \"@fwa/src/components/TeamMembersOverviewPodium\";\nimport { CopyToClipBoard } from \"@fwa/src/components/CopyToClipboard\";\nimport { MemberFundraisingPageDonate } from \"@fwa/src/components/MemberFundraisingPageDonate\";\n\nimport {\n MemberList,\n FilterWrapper,\n Row,\n RowCenter,\n} from \"@fwa/src/components/styles\";\nimport {\n AvatarWrapper,\n ButtonWrapper,\n FullWidthChild,\n ShadowWrapper,\n PodiumLinkWrapper,\n} from \"@fwa/src/components/TeamMembersOverview/styles\";\n\nimport {\n type TeamPageType,\n type TeamMemberType,\n type TeamMemberSortType,\n type FwsResponseData,\n} from \"@fwa/src/types\";\n\nconst joinTeamSVG = \"/assets/images/img/join-team.svg\";\nconst MAX_ITEMS = 5;\n\ntype Props = {\n page: TeamPageType;\n};\n\nexport const TeamMembersOverview = ({ page }: Props) => {\n const { trackEventGtm, trackError } = useTracking();\n const router = useRouter();\n const { sort: sortQuery } = router?.query || {};\n const sort = (queryAsString(sortQuery) || \"leader\") as TeamMemberSortType;\n const url = page\n ? fwsUrlTeamMembers({\n teamId: page.uniqueId,\n currentPage: 1,\n itemsPerPage: MAX_ITEMS,\n sort,\n })\n : null;\n const { data, error, totalItems } = useSwrGet<\n FwsResponseData\n >(url, {});\n const memberships = data?.results || [];\n\n const top3MembersUrl = page\n ? fwsUrlTeamMembers({\n teamId: page.uniqueId,\n currentPage: 1,\n itemsPerPage: 3,\n sort: \"amount\",\n })\n : null;\n\n const { data: top3Members, error: top3MembersError } = useSwrGet<\n FwsResponseData\n >(top3MembersUrl, {});\n const podiumMembers = top3Members?.results || [];\n\n const setSortInQueryString = (sortValue: string) => {\n router\n ?.replace(\n {\n pathname: router.pathname,\n query: { ...router.query, sort: sortValue },\n },\n {\n pathname: router.pathname.replace(\n \"[slug]\",\n `${(router.query.slug as string) || \"\"}`,\n ),\n query: { ...router.query, sort: sortValue },\n },\n { shallow: true },\n )\n .catch((err: Error) => {\n trackError(err, { component: \"TeamMembersOverview\" });\n });\n };\n\n const handleFilterChange = (e: ChangeEvent) => {\n const sortValue = e.target.value as TeamMemberSortType;\n if (!sortValue) return;\n setSortInQueryString(sortValue);\n };\n\n const joinUrl = isBrowser\n ? `${window.location.origin}${window.location.pathname}/join`\n : \"\";\n\n // Superteams don't have team leaders or teamLeaderPages only Teams do\n const isLeaderForMembership = (member: TeamMemberType) =>\n \"teamLeaderPage\" in member.parentPage &&\n member.parentPage.teamLeaderPage &&\n member.parentPage.teamLeaderPage.uniqueId === member.childPage.uniqueId;\n const leaderBoardSlug = `/team${page.url.slice(\n page.url.lastIndexOf(\"/\"),\n )}/leaderboard`;\n return (\n <>\n {/* Error State */}\n {error ? Unable to get team members : null}\n\n {/* Loading State */}\n {!error && !data ? : null}\n\n {/* Empty State */}\n {!error && data && !memberships.length ? (\n There are currently no team members\n ) : null}\n\n {/* Data State */}\n {memberships.length ? (\n
    \n \n Team Members\n {page.leaderboardEnabled ? (\n
    \n {podiumMembers?.length && (\n <>\n \n \n \n {top3MembersError ? (\n Unable to get podium members\n ) : (\n \n )}\n \n \n \n \n \n \n \n \n Show leaderboard\n \n \n \n \n \n )}\n
    \n ) : null}\n\n \n \n \n \n \n \n \n \n
    \n\n \n \n \n \n \"join\n \n \n \n {\n trackEventGtm({ event: \"join_cta\" });\n }}\n data-cta-type=\"join-team\"\n >\n \n Join team\n \n \n \n \n }\n position=\"bottom\"\n css=\"width: 100%;\"\n >\n {\n trackEventGtm({ event: \"invite_cta\" });\n }}\n onTouchStart={() => {\n trackEventGtm({ event: \"invite_cta\" });\n }}\n data-cta-type=\"invite-to-team\"\n >\n Invite to team\n \n \n \n \n \n \n {!error &&\n memberships\n .filter(\n (member: TeamMemberType) =>\n member.childPage.entityType === \"FundraisingPage\",\n )\n .map((member: TeamMemberType) => (\n
  • \n \n
  • \n ))}\n \n\n {totalItems > MAX_ITEMS && (\n \n \n \n \n \n )}\n
    \n ) : null}\n \n );\n};\n\nexport default TeamMembersOverview;\n","import { useSwrGet } from \"@fwa/src/hooks/useSwrGet\";\nimport { Box, Text } from \"@cruk/cruk-react-components\";\n\nimport { fwsUrlTeamMembers } from \"@fwa/src/services/teamService\";\nimport { fwsUrlPageDefaultHeaderImages } from \"@fwa/src/services/fundraisingPageService\";\nimport { CollapsableSection } from \"@fwa/src/components/CollapsableSection\";\nimport { OnlyYou } from \"@fwa/src/components/OnlyYou\";\nimport {\n ProgressList,\n completionStats,\n} from \"@fwa/src/components/ProgressList\";\n\nimport { TopBorderChunky, RowWrap } from \"@fwa/src/components/styles\";\n\nimport {\n type TeamPageType,\n type ImageType,\n type FwsResponseData,\n type ProgressItemType,\n} from \"@fwa/src/types\";\n\ntype Props = {\n page: TeamPageType;\n};\n\nexport const TeamPageProgress = ({ page }: Props) => {\n const membersUrl = fwsUrlTeamMembers({\n teamId: page.uniqueId,\n currentPage: 1,\n itemsPerPage: 2,\n sort: \"leader\",\n });\n const { totalItems } = useSwrGet(membersUrl, {});\n\n const headerImageUrl = page\n ? fwsUrlPageDefaultHeaderImages({\n pageId: page.uniqueId,\n })\n : null;\n const { data: headerImagesData } =\n useSwrGet>(headerImageUrl);\n const headerImages = headerImagesData?.results || [];\n\n const isDefaultHeader =\n page.headerImage &&\n headerImages.find(\n (image: ImageType) => image.uniqueId === page.headerImage?.uniqueId,\n );\n\n const hasStory = !!page?.story?.length;\n const hasImages = !isDefaultHeader;\n const hasMembers = totalItems > 1;\n\n const progressItems: ProgressItemType[] = [\n {\n label: \"Set up your team page\",\n isDone: true,\n },\n {\n label: `Personalise your team's story`,\n fieldName: \"story\",\n dataCtaType: \"progress-edit-story\",\n isDone: hasStory,\n },\n {\n label: `Add your team's cover image`,\n fieldName: \"headerImage\",\n dataCtaType: \"progress-edit-header-image\",\n isDone: hasImages,\n },\n {\n label: \"Get team members to join\",\n fieldName: \"members\",\n dataCtaType: \"progress-invite-to-team\",\n isDone: hasMembers,\n },\n ];\n\n const { complete } = completionStats(progressItems);\n\n return (\n \n \n \n {headerImagesData && (\n \n \n \n \n {complete\n ? \"Nice work - your Team page is looking great!\"\n : \"Every story matters. Use these quick links to help tell yours.\"}\n \n \n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default TeamPageProgress;\n","import styled from \"styled-components\";\n\nexport const FlexWrap = styled.div`\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n align-items: center;\n`;\n\nexport default FlexWrap;\n","import NextLink from \"next/link\";\nimport { useRouter } from \"next/router\";\nimport {\n Box,\n Text,\n Heading,\n Button,\n IconFa,\n} from \"@cruk/cruk-react-components\";\n\nimport { CollapsableSection } from \"@fwa/src/components/CollapsableSection\";\nimport { EditableUrlForm } from \"@fwa/src/components/EditableUrlForm\";\nimport { OnlyYou } from \"@fwa/src/components/OnlyYou\";\n\nimport { TopBorderChunky, Border } from \"@fwa/src/components/styles\";\nimport { FlexWrap } from \"@fwa/src/components/TeamPageSettings/styles\";\n\nimport { type PageType, type TeamPageType } from \"@fwa/src/types\";\nimport { faGear } from \"@fortawesome/free-solid-svg-icons\";\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\n\ntype Props = {\n page: TeamPageType;\n updateAndMutatePage: (data: Partial) => Promise;\n updateAndMutateTeam: (\n data: Partial,\n ) => Promise;\n};\n\nexport const TeamPageSettings = ({\n page,\n updateAndMutatePage,\n updateAndMutateTeam,\n}: Props) => {\n const { trackError } = useTracking();\n const { leaderboardEnabled } = page;\n\n const router = useRouter();\n const urlAnchorHashTagString = router.asPath.split(\"#\")?.[1] || \"\";\n const isOpen = urlAnchorHashTagString === \"team-settings\";\n\n const toggleEnableLeaderboard = () => {\n updateAndMutateTeam({\n leaderboardEnabled: !leaderboardEnabled,\n }).catch((err: Error) => {\n trackError(err, {\n component: \"TeamPageSettings\",\n function: \"leaderboardEnabled\",\n });\n });\n };\n\n return (\n \n \n }\n startOpen={isOpen}\n >\n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n Edit team members\n \n Remove or change members of your team\n \n \n \n Edit team members\n \n \n \n \n \n \n \n \n \n \n Fundraiser leaderboard\n \n \n Control whether or not the fundraising leaderboard appears\n for your team\n \n \n \n {leaderboardEnabled\n ? \"Remove leaderboard\"\n : \"Show leaderboard\"}\n \n \n \n \n
    \n \n
    \n
    \n );\n};\n\nexport default TeamPageSettings;\n","import { type ThemeType, Box } from \"@cruk/cruk-react-components\";\nimport styled from \"styled-components\";\n\nexport const TotaliserWrapper = styled.div`\n max-width: 560px;\n`;\n\nexport const TotaliserButtonsFlex = styled.div<{ theme: ThemeType }>`\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: center;\n flex-direction: row;\n flex-wrap: wrap-reverse;\n background-color: ${({ theme }) => theme.colors.backgroundLight};\n\n > * {\n margin: ${({ theme }) => `0 ${theme.spacing.xs} ${theme.spacing.xs}`};\n }\n`;\n\nexport const TeamLogo = styled.img<{ theme: ThemeType }>`\n height: ${({ theme }) => theme.spacing.xl};\n width: ${({ theme }) => theme.spacing.xl};\n border-radius: 50%;\n border: solid 1px ${({ theme }) => theme.colors.tertiary};\n`;\n\nexport const TeamLabel = styled(Box)<{ theme: ThemeType }>`\n display: block;\n font-family: ${({ theme }) => theme.typography.fontFamilyHeadings};\n font-size: ${({ theme }) => theme.fontSizes.l};\n`;\n","import React, { useEffect } from \"react\";\nimport dynamic from \"next/dynamic\";\nimport NextLink from \"next/link\";\nimport { useRouter } from \"next/compat/router\";\nimport {\n Heading,\n Box,\n IconFa,\n Totaliser,\n Loader,\n Button,\n} from \"@cruk/cruk-react-components\";\nimport { faShareAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport { useInView } from \"react-intersection-observer\";\n\nimport { useSwrGet } from \"@fwa/src/hooks/useSwrGet\";\nimport { queryAsString } from \"@fwa/src/utils/urlUtils\";\nimport {\n calculatePercentRounded,\n numberWithCommas,\n formatMoney,\n} from \"@fwa/src/utils/formatUtils\";\nimport { isPast, isToday } from \"@fwa/src/utils/timeUtils\";\nimport {\n fwsUrlTeamSlug,\n updatePage,\n updateTeam,\n} from \"@fwa/src/services/teamService\";\nimport { useFundraiserContext } from \"@fwa/src/contexts/FundraiserContext\";\nimport { useModalContext } from \"@fwa/src/contexts/ModalContext\";\nimport { useBrandContext } from \"@fwa/src/contexts/BrandContext\";\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\nimport { sendGTMTrackingEvent } from \"@fwa/src/services/gtm\";\n\nimport { PageTitle } from \"@fwa/src/components/PageTitle\";\nimport { ErrorPageWrapper } from \"@fwa/src/components/ErrorPageWrapper\";\nimport { Share } from \"@fwa/src/components/Share\";\nimport { TeamMembersOverview } from \"@fwa/src/components/TeamMembersOverview\";\nimport { TeamPageProgress } from \"@fwa/src/components/TeamPageProgress\";\nimport { TeamPageSettings } from \"@fwa/src/components/TeamPageSettings\";\nimport { TotalsSection } from \"@fwa/src/components/TotalsSection\";\nimport { PageMemberOf } from \"@fwa/src/components/PageMemberOf\";\nimport { PageHeaderImage } from \"@fwa/src/components/PageHeaderImage\";\nimport { PageSubtitle } from \"@fwa/src/components/PageSubtitle \";\nimport { PageStory } from \"@fwa/src/components/PageStory\";\n\nimport {\n ContentMaxWidth,\n BlockCenter,\n RowStretch,\n HeaderGroup,\n AvatarResponsiveWrapper,\n RowAligned,\n} from \"@fwa/src/components/styles\";\n\nimport {\n TotaliserButtonsFlex,\n TeamLogo,\n TeamLabel,\n} from \"@fwa/src/components/TeamPage/styles\";\n\nimport {\n type TeamPageType,\n type BrandNameType,\n type PageType,\n} from \"@fwa/src/types\";\n\nconst memberTeamCrukSvg = \"/assets/images/img/member-team-cruk-128.svg\";\nconst memberTeamSu2cSvg = \"/assets/images/img/member-team-su2c-128.svg\";\nconst memberTeamBBSvg = \"/assets/images/img/member-team-bb-128.svg\";\n\nconst teamPageBrandedLogos = {\n cruk: memberTeamCrukSvg,\n rfl: memberTeamCrukSvg,\n su2c: memberTeamSu2cSvg,\n bowelbabe: memberTeamBBSvg,\n};\n\nconst FeedListFilter = dynamic(\n () => import(\"@fwa/src/components/FeedListFilter\"),\n);\n\ntype Props = {\n pageData: TeamPageType;\n themeName?: BrandNameType;\n};\n\nexport const TeamPage = ({ pageData, themeName }: Props) => {\n // figure out unique page url for page cacheId\n const router = useRouter();\n const { slug } = router?.query || {};\n const slugString = queryAsString(slug);\n const url = slugString.length\n ? `${fwsUrlTeamSlug({ slug: slugString })}`\n : null;\n const { trackEventGtm, trackError } = useTracking();\n const [modalState] = useModalContext();\n\n const { ref: feedRef, inView: feedInView } = useInView({\n triggerOnce: true,\n rootMargin: \"200px\",\n });\n\n // page cache\n const opts = {\n fallbackData: pageData,\n revalidateOnMount: true,\n revalidateIfStale: true,\n };\n const { data: page, error, mutate } = useSwrGet(url, opts);\n\n const [brandName, setBrandName] = useBrandContext();\n\n useEffect(() => {\n if (!!themeName && themeName !== brandName) {\n setBrandName(themeName);\n }\n }, [themeName, brandName, setBrandName]);\n\n useEffect(() => {\n sendGTMTrackingEvent({\n event: \"pageView\",\n pagePath: \"/team-page\",\n pageTitle: \"team page\",\n });\n }, []);\n\n // The SWR get function with the mutate, is from the URL using the a slug\n // which redirects and can't be used for POST requests\n // To update page data via API we need to use a different endpoint\n // and use that output to mutate local data on SWR\n const updateAndMutatePage = async (\n newData: Partial,\n refresh?: boolean,\n ) =>\n updatePage({ pageId: page?.uniqueId || \"\", data: newData })\n .then(\n (updatedData) =>\n mutate(updatedData, refresh || false) as Promise,\n )\n .catch((err) => {\n trackError(err as Error, {\n component: \"TeamPage\",\n function: \"updateAndMutatePage\",\n });\n });\n\n // Same as above but uses team endpoint to update things that only exist on team\n // like leaderboard enabled which isn't a generic page attribute\n const updateAndMutateTeam = async (\n newData: Partial,\n refresh?: boolean,\n ) =>\n updateTeam({ teamId: page?.uniqueId || \"\", data: newData })\n .then(\n (updatedData) =>\n mutate(updatedData, refresh || false) as Promise,\n )\n .catch((err) => {\n trackError(err as Error, {\n component: \"TeamPage\",\n function: \"updateAndMutateTeam\",\n });\n });\n\n // this is when we want to mutate the page but the data is set via an alternative api endpoint\n // for example setting the header image which has its own endpoint to create an image entity before attaching to a page\n // but header image data still appears in page data.\n const mutatePage = (pageDataToMutate: Partial) =>\n mutate({ ...page, ...pageDataToMutate }, false) as Promise;\n\n const [fundraiserState] = useFundraiserContext();\n const percentageOfTarget = page\n ? calculatePercentRounded(page.donationsTotalAmount, page.target)\n : 0;\n const target = numberWithCommas(\n formatMoney(page?.target ? parseFloat(`${page.target}`) : 0),\n );\n const canEdit: boolean =\n !!fundraiserState?.fundraiser?.uniqueId &&\n fundraiserState?.fundraiser?.uniqueId ===\n page?.teamLeaderPage?.fundraiser?.uniqueId;\n const hasTarget = page?.target && page.target > 0;\n const pageCloseDate = page?.closeDate ? new Date(page.closeDate) : null;\n const isPageClosed: boolean =\n page?.pageStatus === \"closed\" ||\n (pageCloseDate && (isToday(pageCloseDate) || isPast(pageCloseDate))) ||\n false;\n\n return (\n \n {/* Display modal */}\n {modalState}\n \n {/* Loading state */}\n {!page ? : null}\n {/* Data state */}\n {/* Top actions block */}\n {page ? (\n <>\n \n \n \n \n \n Share\n \n \n\n {\n trackEventGtm({\n event: \"donate_cta\",\n cta: \"header\",\n });\n }}\n data-cta-type=\"donate\"\n >\n \n \n \n \n \n \n \n \n \n Team page\n \n \n \n \n {/* Title block */}\n \n \n {/* Header image */}\n \n \n \n \n \n ) : null}\n {page ? (\n <>\n {/* totaliser block */}\n \n \n \n \n \n {/* Edit fundraising target */}\n {/* Design for OF-5985 requires an editable team target but API doesn't support yet. Tom m is looking into it. \n \n \n \n \n */}\n {/* Share and donate btns */}\n \n \n \n \n Share this team\n \n \n {!isPageClosed && (\n {\n trackEventGtm({\n event: \"donate_cta\",\n cta: \"totaliser\",\n });\n }}\n data-cta-type=\"donate\"\n >\n \n \n )}\n \n \n \n \n {/* Page settings section */}\n {canEdit ? (\n
    \n \n \n
    \n ) : null}\n {/* Sub Heading Block */}\n\n \n\n {/* members block */}\n \n \n \n {/* story block */}\n \n \n ) : null}\n {/* Feed block */}\n {/* Is owner is false because the feed items come from different fundraiser pages so they are never editable in a teams page */}\n {!!page && (page.donationsCount || page.postsCount) ? (\n
    \n \n Latest updates\n {feedInView && (\n \n )}\n \n \n
    \n ) : null}\n
    \n
    \n );\n};\n\nexport default TeamPage;\n","import Head from \"next/head\";\nimport { type NextPageContext } from \"next\";\nimport { getCache } from \"@fwa/src/store/SwrCache\";\n\nimport { pageFetcher } from \"@fwa/src/services/apiClient\";\nimport { fwsUrlTeamSlug } from \"@fwa/src/services/teamService\";\nimport { isBrowser } from \"@fwa/src/utils/browserUtils\";\nimport { getShareContentFromEntity } from \"@fwa/src/utils/shareUtils\";\nimport { queryAsString } from \"@fwa/src/utils/urlUtils\";\n\nimport { ErrorPageWrapper } from \"@fwa/src/components/ErrorPageWrapper\";\nimport { TeamPage } from \"@fwa/src/components/TeamPage\";\n\nimport {\n type TeamPageType,\n type ResponseError,\n type BrandNameType,\n} from \"@fwa/src/types\";\n\ntype PageProps = {\n pageData?: TeamPageType;\n error?: ResponseError;\n themeName?: BrandNameType;\n};\n\nconst Page = ({ pageData, themeName, error }: PageProps) => {\n const { title, description, image } = pageData\n ? getShareContentFromEntity(pageData)\n : { title: \"\", description: \"\", image: \"\" };\n\n return (\n \n {pageData && (\n <>\n \n {title}\n \n {/* sharing meta */}\n \n {description?.length && (\n <>\n \n \n \n )}\n \n \n {image && (\n <>\n \n \n \n \n \n )}\n {/* end sharing meta */}\n \n \n \n )}\n \n );\n};\n\nPage.getInitialProps = async ({\n query,\n res,\n}: NextPageContext): Promise => {\n if (res) {\n res.setHeader(\n \"Cache-Control\",\n \"max-age=3600, stale-while-revalidate=86400\",\n );\n }\n\n const { slug } = query;\n const cache = getCache();\n const slugString = queryAsString(slug);\n const url = fwsUrlTeamSlug({ slug: slugString || \"\" });\n const getThemeName = (page: TeamPageType) =>\n (page?.theme as BrandNameType) ||\n page?.teamLeaderPage?.fundraisingPageType?.brand?.name;\n\n if (isBrowser) {\n const cachedData = cache.get(url)?.data as TeamPageType;\n if (cachedData)\n return {\n pageData: cachedData,\n error: undefined,\n themeName: getThemeName(cachedData),\n };\n }\n\n const { pageData, error } = await pageFetcher(url);\n\n return { pageData, error, themeName: getThemeName(pageData!) };\n};\n\nexport default Page;\n","import { millisecondsInHour, millisecondsInMinute } from \"./constants.mjs\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n const timestamp = date.getTime();\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n const dirtyDate = new Date(timestamp + time);\n // JS parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n const result = new Date(0);\n result.setFullYear(\n dirtyDate.getUTCFullYear(),\n dirtyDate.getUTCMonth(),\n dirtyDate.getUTCDate(),\n );\n result.setHours(\n dirtyDate.getUTCHours(),\n dirtyDate.getUTCMinutes(),\n dirtyDate.getUTCSeconds(),\n dirtyDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n"],"names":["FlippingIcon","styled","span","$open","theme","colors","primary","spacing","xxs","typography","fontFamilyHeadings","fontSizes","l","name","id","headerTitleText","headerBody","headerIcon","startOpen","children","handleOpenChanged","settingsOpen","setSettingsOpen","useState","useTheme","Collapse","headerComponent","Box","div","as","paddingRight","HeaderText","IconFa","faIcon","faChevronDown","headerTitleTextColor","headerTitleTextSize","headerTitleTextFontFamily","onOpenChange","handleSettingsOpen","value","EditableUrlForm","page","handleEditData","route","trackError","useTracking","currentSlug","url","slice","lastIndexOf","slugState","setSlugState","validationMessage","setValidationMessage","isLoading","setIsLoading","urlSuggestion","setUrlSuggestion","handleSubmit","validationResultString","validatePageUrl","Promise","resolve","newUrl","FWA_BASE_URL","isUrlUnique","fetcher","fwsUrlCheckUrl","then","res","isUnique","data","catch","error","component","function","urlPath","previousUrl","data-component","Heading","h2","textSize","marginRight","faLink","Text","wordBreak","Link","href","data-cta-type","Editable","fieldName","editButtonHidden","editNode","TextField","label","aria-label","onChange","e","handleChange","target","onBlur","handleBlur","errorMessage","maxLength","PAGE_URL_MAX_LENGTH","extraTop","isBrowser","window","location","origin","textAlign","marginTop","calcLength","length","role","marginBottom","Button","appearance","onClick","handleSuggestionClick","split","suggestedSlug","viewNode","Border","ArrowWrapper","faArrowRight","tooltip","ProgressButton","button","m","BlockCentreMobile","breakpoint","mobile","s","doneCount","progressItems","reduce","accumulator","progressItem","isDone","percentageComplete","Math","floor","complete","ProgressList","trackEventOptimizely","useOptimizelyContext","setActiveSectionContext","useActiveSectionContext","handleLinkClick","element","document","getElementById","scrollIntoView","behavior","block","setTimeout","activeSection","completionStats","useEffect","percentageCompleteOnFirstLoad","eventKey","eventTags","List","map","li","ProgressRow","preventDefault","dataCtaType","RowStretchCentered","textColor","ScreenReaderOnly","faCircleCheck","size","faCircle","ProgressBar","isCircular","percentage","circleContents","LARGE_ICON","MEDIUM_ICON","SMALL_ICON","PodiumWrapper","PODIUM_WIDTH","PositionWrapper","$medal","UserIconWrapper","tokenColors","gold","avatarBorder","AvatarFull","Avatar","FirstPlace","PodiumMember","member","medalColor","childPage","owner","displayName","fundraiser","forename","fundraiserProfileImageUrl","profileImage","imagePathFromImageType","undefined","imageUrl","alt","uniqueId","TeammMembersOverviewPodium","members","ShadowWrapper","grey_300","borderRadius","xs","ButtonWrapper","PodiumLinkWrapper","TeamMembersOverview","trackEventGtm","router","useRouter","sort","sortQuery","query","queryAsString","fwsUrlTeamMembers","teamId","currentPage","itemsPerPage","MAX_ITEMS","totalItems","useSwrGet","memberships","results","top3MembersUrl","top3Members","top3MembersError","podiumMembers","setSortInQueryString","replace","pathname","sortValue","slug","shallow","err","joinUrl","isLeaderForMembership","parentPage","teamLeaderPage","leaderBoardSlug","Loader","leaderboardEnabled","NextLink","A","RowCenter","faTrophy","FilterWrapper","Select","required","handleFilterChange","aria-controls","hideRequiredInLabel","option","MemberList","aria-live","Row","AvatarWrapper","img","src","joinTeamSVG","paddingLeft","event","FullWidthChild","PopOver","modalLabel","modalContent","CopyToClipBoard","shareCopy","position","onMouseDown","onTouchStart","filter","entityType","MemberFundraisingPageDonate","fundraisingPage","isLeader","TeamPageProgress","membersUrl","headerImageUrl","fwsUrlPageDefaultHeaderImages","pageId","headerImagesData","headerImages","isDefaultHeader","headerImage","find","image","hasStory","story","hasImages","hasMembers","TopBorderChunky","backgroundColor","paddingBottom","CollapsableSection","OnlyYou","RowWrap","FlexWrap","updateAndMutatePage","updateAndMutateTeam","urlAnchorHashTagString","asPath","faGear","color","isOpen","paddingTop","toggleEnableLeaderboard","TotaliserButtonsFlex","backgroundLight","xl","tertiary","memberTeamCrukSvg","teamPageBrandedLogos","cruk","rfl","su2c","memberTeamSu2cSvg","bowelbabe","memberTeamBBSvg","FeedListFilter","dynamic","TeamPage","pageData","themeName","slugString","fwsUrlTeamSlug","modalState","useModalContext","ref","feedRef","inView","feedInView","useInView","triggerOnce","rootMargin","mutate","fallbackData","opts","revalidateOnMount","revalidateIfStale","brandName","setBrandName","useBrandContext","sendGTMTrackingEvent","pagePath","pageTitle","newData","refresh","updatePage","updatedData","updateTeam","fundraiserState","useFundraiserContext","percentageOfTarget","calculatePercentRounded","donationsTotalAmount","numberWithCommas","formatMoney","parseFloat","canEdit","hasTarget","pageCloseDate","closeDate","Date","isPageClosed","pageStatus","isToday","isPast","ErrorPageWrapper","ContentMaxWidth","padding","RowStretch","Share","feedItem","isOwner","popoverPosition","ctaLocation","type","faShareAlt","cta","paddingVertical","paddingHorizontal","margin","AvatarResponsiveWrapper","RowAligned","TeamLogo","TeamLabel","marginLeft","HeaderGroup","PageTitle","isTeam","PageHeaderImage","mutatePage","pageDataToMutate","BlockCenter","Totaliser","isCompact","total","giftAid","donationsGiftAidTotalAmount","summaryMessage","PageMemberOf","TeamPageSettings","PageSubtitle","PageStory","donationsCount","postsCount","canCreate","feedItemTotals","feeditems","donations","posts","activitys","milestones","pageUrl","showParentPageLink","TotalsSection","donationsTotalAmountFake","donationsTotalAmountFacebook","title","description","getShareContentFromEntity","Head","meta","content","property","Page","getInitialProps","cache","getCache","getThemeName","fundraisingPageType","brand","cachedData","get","pageFetcher"],"sourceRoot":"","ignoreList":[16]}